#pragma once

#include <sys/socket.h>
#include <rtc_base/socket_address.h>

namespace xrtc {
    int create_tcp_server(const char* addr, int port);
    int create_udp_socket(int family);
    int tcp_accept(int sock, char* host, int* port);
    int sock_setnonblock(int sock);
    int sock_setnodelay(int sock);
    int sock_peer_to_str(int sock, char* ip, int* port);
    int sock_read_data(int sock, char* buf, size_t len);
    int sock_write_data(int sock, const char* buf, size_t len);
    int sock_bind(int sock, struct sockaddr* addr, socklen_t len, int min_port, int max_port);
    int sock_get_address(int sock, char* ip, int* port);
    int sock_get_local_address(int sock, rtc::SocketAddress* addr);
    int sock_recv_from(int sock, char* buf, size_t len, struct sockaddr* addr, socklen_t addr_len);
    int64_t sock_get_recv_timestamp(int sock);
    int sock_send_to(int sock, const char* buf, size_t len, int flags, struct sockaddr* addr, socklen_t addr_len);
} // namespace xrtc